"""
官方国内镜像：https://hf-mirror.com，但个人尝试也比较慢
https://modelscope.cn 阿里云镜像，就是魔塔社区【好用】
https://mirrors.tuna.tsinghua.edu.cn/hugging-face 清华大学镜像【没用过】

结论：通过环境变量的方式，试过没啥用；改为：从魔塔社区下载模型到本地，然后用SentenceTransformer加载本模型。
# os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com' 没啥用
"""
from typing import List


def get_Model_all_MiniLM_L6_v2():
    """
        加载本地模型
      Returns:
            all_MiniLM_L6_v2 嵌入模型
    """
    # 指定本地模型路径， 先从魔塔社区下载 模型到本地目录。然后再用SentenceTransformer加载这个本地模型。
    model_path = "/Users/brightzhou/.cache/modelscope/hub/models/sentence-transformers/all-MiniLM-L6-v2"  # 你下载的模型路径
    from sentence_transformers import SentenceTransformer
    hf_model = SentenceTransformer(model_path)
    print("成功从本地加载模型")
    return hf_model


class HFModelUtils:

    def __init__(self, model: str = "all-MiniLM-L6-v2"):
        self.model = model

    @staticmethod
    def embed_model():
        """
            加载本地模型
          Returns:
                all_MiniLM_L6_v2 嵌入模型
        """
        # 指定本地模型路径， 先从魔塔社区下载 模型到本地目录。然后再用SentenceTransformer加载这个本地模型。
        from sentence_transformers import SentenceTransformer
        model_path = "/Users/brightzhou/.cache/modelscope/hub/models/sentence-transformers/all-MiniLM-L6-v2"  # 你下载的模型路径
        hf_model = SentenceTransformer(model_path)
        print("成功从本地加载模型[all-MiniLM-L6-v2]")
        return hf_model

    def embed_query(self, text: str) -> List[float]:
        """Compute query embeddings using a HuggingFace transformer model.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        """
        return self.embed_documents([text])[0]

